package fr.demos.cinepantin;

import java.io.Serializable;
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;

import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

import fr.demos.cinepantin.enumerate.Anciennete;
import fr.demos.cinepantin.enumerate.Categorie;
import fr.demos.cinepantin.enumerate.Genre;
import fr.demos.cinepantin.enumerate.SupportFilm;
import fr.demos.cinepantin.enumerate.Tva;

/**
 * 
 * @author CQP-DNT
 *
 */
@Entity
public class Film extends Article implements Serializable {

	private String realisateur;
    private String [] acteurs = null;
    @Enumerated(EnumType.STRING)
    private SupportFilm supportFilm ;
    @Enumerated(EnumType.STRING)
    private Genre genre;
	private double duree;

	// @ManyToOne
	// private Proprietaire proprio;

	protected Film() {

	}
	
	public Film(String titre, String realisateur,
			String[] acteurs, SupportFilm supportFilm, Genre genre, String resume, double duree,
			Anciennete anciennete, int anneeDeSortie, Tva tva,
			double prixVente, int stock) {
		super(titre, resume, anciennete, anneeDeSortie, tva, Categorie.FILM, prixVente, stock);
		this.acteurs=acteurs;
		this.realisateur = realisateur;
		this.supportFilm = supportFilm;
		this.genre = genre;
		this.duree = duree;
	}
	

//	@Override
//	public double hashCode() {
//		final int prime = 31;
//		double result = 1;
//		result = prime * result + ((acteurs == null) ? 0 : acteurs.hashCode());
//		result = prime * result + duree;
//		result = prime * result + ((genre == null) ? 0 : genre.hashCode());
//		// result = prime * result + proprio.getIdProprietaire();
//		result = prime * result
//				+ ((realisateur == null) ? 0 : realisateur.hashCode());
//		return result;
//	}


	public String getRealisateur() {
		return realisateur;
	}

	public void setRealisateur(String realisateur) {
		this.realisateur = realisateur;
	}

	public String[] getActeurs() {
		return acteurs;
	}

	public void setActeurs(String[] acteurs) {
		this.acteurs = acteurs;
	}

	public Genre getGenre() {
		return genre;
	}

	public void setGenre(Genre genre) {
		this.genre = genre;
	}

	public double getDuree() {
		return duree;
	}

	public void setDuree(double duree) {
		this.duree = duree;
	}
	
	public SupportFilm getSupportFilm() {
		return supportFilm;
	}

	public void setSupportFilm(SupportFilm supportFilm) {
		this.supportFilm = supportFilm;
	}

//	@Override
//	public boolean equals(Object obj) {
//		if (this == obj)
//			return true;
//		if (obj == null)
//			return false;
//		if (getClass() != obj.getClass())
//			return false;
//		Film other = (Film) obj;
//		if (acteurs == null) {
//			if (other.acteurs != null)
//				return false;
//		} else if (!acteurs.equals(other.acteurs))
//			return false;
//		if (duree != other.duree)
//			return false;
//		if (genre != other.genre)
//			return false;
//		// if (proprio != other.proprio)
//		// return false;
//		if (realisateur == null) {
//			if (other.realisateur != null)
//				return false;
//		} else if (!realisateur.equals(other.realisateur))
//			return false;
//		return true;
//
//
//}


}
